function create(fn, ...args) {
    if (typeof fn !== 'function') {
        throw new TypeError('First argument must be a function');
    }
    // 1、创建一个新对象, 并将其原型指向fn的原型
    const obj = Object.create(fn.prototype)

    // 2、将fn的this指向新对象, 并执行fn, 将结果赋值给res
    const res = fn.apply(obj, args)

    // 3、如果res是一个对象, 则返回res, 否则返回新对象
    return (typeof res === 'object' && res !== null) ? res : obj
}

